package com.hbnu.tonghengchang;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Random;

import static java.lang.Math.*;

public class DemoCourseWork {

    public static void main(String[] args) {
        /***
         * 1.StringBuilder类介绍
         */
        StringBuilder str2 = new StringBuilder("hello");
        str2.append(" word");//将指定字符串追加到该字符串末尾
        System.out.println(str2.toString());

        str2.insert(9," new word!");//在指定位置插入字符串
        System.out.println(str2.toString());

        str2.delete(5,12);//删除指定范围内的字符
        System.out.println(str2.toString());

        str2.replace(5,15," java");//替换指定范围内的字符
        System.out.println(str2.toString());

        /***
         * 2.StringBuffer类介绍
         */
        StringBuffer buffer = new StringBuffer("hello world");
        char c1 = buffer.charAt(5);//获取指定索引处的字符
        System.out.println(c1);

        buffer.reverse();//反转字符串
        System.out.println(buffer.toString());

        int len = buffer.length();//获取字符串的长度
        System.out.println(len);

        /***
         * 3.Math类介绍
         */
        int x = 5;
        int y = 2;
        int z = (int) pow(x,y);
        System.out.println("x的y次方是："+z);//计算以x为底的y次方

        System.out.println("x的绝对值："+abs(x));//计算某数的绝对值

        System.out.println("x的算数平方根："+sqrt(x));//计算某个数的算术平方根

        System.out.println("两个数中的最大值："+max(x,y));//求两个数中的最大值

        System.out.println("两个数中的最小值："+min(x,y));//求两个数中的最小值

        /***
         * 4.random类介绍
         */
        Random random = new Random();
        int n1 = random.nextInt();//返回一个伪随机的整数
        int n2 = random.nextInt(50);//返回一个0~49 之间的伪随机的整数
        Double n3 = random.nextDouble();//返回一个0.0~1.0之间的伪随机的整数
        Boolean n4 = random.nextBoolean();//返回一个伪随机的布尔值
        float n5 = random.nextFloat();//返回一个伪随机的浮点数
        System.out.println(n1+","+n2+","+n3+","+n4+","+n5);


        /***
         * 5.Arrays类介绍
         */
        int[] arr = new int[5];
        Arrays.fill(arr,5);//填充数组中每一个元素

        int[] arr2={2,5,4,3,6};
        Arrays.sort(arr2);//对数组进行排序，默认升序
        System.out.println(Arrays.toString(arr2));

        int[] arr3 = {5,7,8,9,4};
        Boolean bool = Arrays.equals(arr2,arr3);//比较两个数组是否相等
        System.out.println(bool);

        int index = Arrays.binarySearch(arr2,4);//在排序后的数组中查找元素的位置
        System.out.println(index);

        int[] arr4 = Arrays.copyOf(arr3,3);//复制数组
        System.out.println(Arrays.toString(arr4));

        /***
         * 6.Double类介绍
         */
        double num = Double.parseDouble("45.2456");//将字符串转换成double值
        String str = Double.toString(45.2456);//将double转换成字符串值
        double num2 = 46.455;
        Double.compare(num2,num);//比较两个double值大小
        Double.isInfinite(num2);//判断double值是不是无限大

        /***
         * 7.Integer类介绍
         */
        Integer a = 50;
        Integer b = 60;
        Integer.compare(a,b);//比较两个整数的大小
        Integer.toString(b);//将数字转换成字符串输出
        Integer.max(a,b);//找出两数中最大者


        /***
         * 8.BigDecimal类介绍
         */
        BigDecimal a1 = new BigDecimal(10.25);
        BigDecimal b1 = new BigDecimal(12.5);

        BigDecimal sum = a1.add(b1);//将两个BigDecimal的值相加返回一个新的BigDecimal对象
        BigDecimal dif = a1.subtract(b1);//将两个BigDecimal的值相减返回一个新的BigDecimal对象
        BigDecimal mul = a1.multiply(b1);//将两个BigDecimal的值相乘返回一个新的BigDecimal对象
        BigDecimal dvd = a1.divide(b1);//将两个BigDecimal的值相除返回一个新的BigDecimal对象，除不尽则会抛出异常
    }
}
